<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.0 数组的解构赋值

        let arr = [4, , { n: 7 }, 'abc', 'xyz', true];

        // 带 let 和不带 let
        // let [n1, n2, n3, s1, s2, b1] = arr;

        ; (function () {
            // 如果不带 let，相当于创建了n个全局变量
            ;[n1, n2 = 5, n3, s1, s2, b1] = arr;
        })()

        console.log(n1, n2, n3, s1, s2, b1);

        // 2.0 修改赋值之后的变量 - 值拷贝和引用拷贝
        // 解构赋值，相当于是把值复制了一份给变量，并没有影响数组的数据
        n1 = 188;
        n3.n = 2999;

        console.log(n3);
        console.log(arr);

        // 3.0 数组的解构过程中，如果出现空项，可以预留一个默认值
        // 不会影响原数组
        // let [a = 1, b, c, d] = arr;

    </script>
</body>

</html>